using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidad;
using Dao;
using System.IO;

public partial class ABMDocente : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Usuario u = Session["login"] as Usuario;
            if (u.tipoUsuario != "Administrador")
                Response.Redirect("~/Login.aspx");
        }
    }
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            lstCodProvincia.Items.Insert(0, "Seleccione una");
            if (Request.QueryString.Count > 0)
            {
                if (Request.QueryString["update"].ToString() == "true")
                {
                    tituloForm.InnerText = "Modificar Docente";
                    btnGrabar.Visible = true;
                    btnNuevo.Visible = false;
                    gvDocente.Visible = true;
                    cvDni.Enabled = false;
                    CargarGrilla();
                }
            }
        }
    }
    private void LimpiarControles()
    {
        txtNombre.Text = string.Empty;
        txtApellido.Text = string.Empty;
        txtEmail.Text = string.Empty;
        lstCodProvincia.SelectedIndex = 0;
        txtFechaNac.Text = string.Empty;
        txtDni.Text = string.Empty;
        ViewState["legDocente"] = null;
    }
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        this.LimpiarControles();
    }
    private void CargarGrilla()
    {
        try
        {
            gvDocente.DataSource = DocenteDao.ObtenerTodoGrilla();
            gvDocente.DataKeyNames = new string[] { "legDocente" };
            gvDocente.DataBind();
        }
        catch (ApplicationException ex)
        {
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Eror al cargar la tabla de alumnos, debido a: \n " + ex.Message + "');", true);
        }
    }

    protected void btnGrabar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            Docente d = new Docente();
            d.apellido = txtApellido.Text;
            d.nombre = txtNombre.Text;
            d.codProvincia = lstCodProvincia.SelectedIndex;
            d.dni = int.Parse(txtDni.Text);
            d.email = txtEmail.Text;
            d.fechaNac = DateTime.Parse(txtFechaNac.Text);
            d.pass = txtDni.Text;

            if (!Request.QueryString.HasKeys())
            {
                try
                {
                    DocenteDao.Insertar(d);
                    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Se cargo con exito el Docente " + d.apellido + ", " + d.nombre + " y el legajo que se le asigno es: " + d.legDocente+ ".');", true);
                    this.LimpiarControles();
                }
                catch (ApplicationException aex)
                {
                    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Eror al cargar el Docente. \n" + aex.Message + "');", true);
                }
            }
            else
            {
                try
                {
                    d.legDocente = int.Parse(ViewState["legDocente"].ToString());
                    DocenteDao.Actualizar(d);
                    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Se actualizo con exito el Docente " + d.apellido + ", " + d.nombre + ".');", true);
                    this.LimpiarControles();
                    this.CargarGrilla();
                }
                catch (ApplicationException aex)
                {
                    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Eror al actualizar el Docente. \n" + aex.Message + "');", true);
                }
            }
        }
    }
    protected void btnEliminar_Click(object sender, EventArgs e)
    {
        if (ViewState["legDocente"] != null)
        {
            DocenteDao.Eliminar((int)ViewState["legDocente"]);
            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "keyhere", "alert('Se elimino con exito el Docente con legajo " + ViewState["legDocente"].ToString() + ".');", true);
            btnNuevo_Click(null, null);
            CargarGrilla();
        }
    }
    protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = DocenteDao.ValidarDNI(int.Parse(txtDni.Text));
    }
    protected void txtDni_TextChanged(object sender, EventArgs e)
    {
        cvDni.IsValid = DocenteDao.ValidarDNI(int.Parse(txtDni.Text));
    }
    protected void gvDocente_SelectedIndexChanged(object sender, EventArgs e)
    {
        ViewState["legDocente"] = int.Parse(gvDocente.SelectedDataKey.Value.ToString());
        Docente d = DocenteDao.ObtenerPorId(int.Parse(gvDocente.SelectedDataKey.Value.ToString()));
        txtApellido.Text = d.apellido;
        txtNombre.Text = d.nombre;
        txtEmail.Text = d.email;
        lstCodProvincia.SelectedIndex = d.codProvincia;
        txtFechaNac.Text = d.fechaNac.ToShortDateString();
        txtDni.Text = Convert.ToString(d.dni);
    }

}